home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / boostrs.arc / RIGHT.ASM < prev    next >
Assembly Source File  |  1985-11-09  |  1KB  |  50 lines

  1. ;**********************************************
  2. ;       type
  3. ;           AnyString = string[255];
  4. ;
  5. ;       Function RIGHT( S : AnyString;
  6. ;                       N : integer;
  7. ;                     PAD : Char ) : AnyString;
  8. ;
  9. ;       Returns a string with S right-justified
  10. ;       in a field of length N.  Padding or
  11. ;       truncation on left, as necessary.
  12. ;
  13. ;**********************************************
  14. RIGHT   proc    near
  15.         push    bp
  16.     mov    bp,sp
  17.     push    ds
  18. ;
  19.     mov    ax,ss        ; set up . . .
  20.     mov    es,ax        ; segment . .
  21.     mov    ds,ax        ; regs
  22.     lea    di,[bp+265]    ; first pos of RESULT
  23.     mov    ax,[bp+6]    ; N
  24.     mov    [bp+264],al    ; set result length
  25.     mov    cl,[bp+8]    ; length of S
  26.     xor    ch,ch
  27.         lea     si,[bp+9]       ; first character of S
  28.     add    si,cx
  29.     dec    si        ; last ch of S
  30.     sub    ax,cx        ; N > l'S?
  31.     ja    Pad        ; yes, need to pad
  32.     mov    cx,[bp+6]    ; no, skip pad
  33.     jmp    rig2
  34. ;
  35. PAD:    mov    cx,ax        ; get length of pad
  36.     mov    ax,[bp+4]    ; get fill-byte
  37.     cld
  38. rep    stosb            ; pad result on left
  39.     mov    cl,[bp+8]    ; l'S
  40. ;
  41. RIG2:    add    di,cx
  42.     dec    di
  43.     std
  44. rep    movsb
  45. ;
  46.     pop    ds
  47.         mov     sp,bp
  48.         pop     bp
  49.         ret     260             ; clear parameters
  50. RIGHT    endp